package com.chilli.cosima.service;

import java.util.List;

import com.chilli.cosima.action.login.Node;
import com.chilli.cosima.data.bean.TOperator;
import com.chilli.cosima.data.bean.TPower;

public interface LoginService
{

	public List<TPower> findChildrenPowerByParentId(String powerid);

	/**
	 * 根据传入的节点构建以此节点为根的树结构
	 * 
	 * @param node
	 * @return [参数说明]
	 * 
	 * @return Node [返回类型说明]
	 * @exception throws
	 *                [违例类型] [违例说明]
	 * @see [类、类#方法、类#成员]
	 */
	public Node buildTree(Node node);

	/**
	 * 根据用户权限生成的树
	 * 
	 * @param node
	 * @param powerList
	 * @return [参数说明]
	 * 
	 * @return Node [返回类型说明]
	 * @exception throws
	 *                [违例类型] [违例说明]
	 * @see [类、类#方法、类#成员]
	 */
	public Node buildTree(Node node, List<String> powerIdList);

	/**
	 * 将已经构造好的树结构解析为html，直接在页面显示。
	 * 在buildTree方法中也可以直接构建html，但是buildTree构建node树结构对象可以
	 * 以后在界面用json解析，这样后台代码完全避免嵌入html和样式等，代码更清晰。
	 * 
	 * 后台构建html的好处是用户登录一次，则将构建好的html放到session中，
	 * 而且构建的html只有骨架，样式和各种属性操作都是在界面由jquery完成， 在session有效的情况下可以避免重复构建。
	 * 
	 * 具体采用何种方式更好，需要根据具体需求而定。
	 * 
	 * @param tree
	 * @return [参数说明]
	 * 
	 * @return String [返回类型说明]
	 * @exception throws
	 *                [违例类型] [违例说明]
	 * @see [类、类#方法、类#成员]
	 */
	public String parseTree2Str(Node tree);

	public List<String> findPowerIdListWithoutButton(TOperator operator);

	public List<String> findPowerIdListWithButton(TOperator operator);

	public List<String> findPowerUrlListWithButton(TOperator operator);
}
